/*************************************************************
 * 主要介绍结构体的声明/定义/初始化
 * 结构体的声明/定义其实和类的声明/定义类似
 * 1、(C语言结构体的定义需要带有struct关键字 C++不需要
 * 2、结构体初始化有顺序初始化/逐个初始化/构造函数等几种方式
 *    一旦采用构造函数的形式，Student stu1;这种方式就不能使用了
 * 当然也可以采用memset_s的方法进行初始化
 * **********************************************************/
#include "common.h"
using namespace std;

struct Student {
    int age;
    string name;
    char* addr;
    Student(int age_, string name_, char* addr_){
        age = age_;
    };
    void show() {
        cout << "age = " << age << endl;
        cout << "name = " << name << endl;
        cout << "addr = " << addr << endl;
    };
};

int main()
{
    struct Student stu(3, "", "");  // C语言定义结构体的方式
    Student stu1(2, "", "");  // C++语言定义结构体的方式
    //初始化的方式
    Student stu2 = { 18, "wang", "chengdu" };  // 顺序初始化
    
    Student stu3(1, "", "");
    stu3.age = 17;
    stu3.name = "yang";
    stu3.addr = "henan";

    Student stu4(20, "wang", "kaifeng");
    stu4.show();
    return 0;
}